﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.ModelBinding;
using Kakaroto.Models;

namespace Kakaroto.Pedidos
{
    public partial class Observacoes : System.Web.UI.Page
    {
        static string RawId = String.Empty;
        static string prevPage = String.Empty;
        static int IdProduto;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                prevPage = Request.UrlReferrer.ToString();
            }

            RawId = Request.QueryString["Id"];
            if (!String.IsNullOrEmpty(RawId) && int.TryParse(RawId, out IdProduto))
            {
                IdProduto = Convert.ToInt16(RawId);
            }
        }

        public IQueryable<Produto> GetProduto([QueryString("Id")] int? id)
        {
            var _db = new KakarotoEntities();
            IQueryable<Produto> query = _db.Produto;
            if (id.HasValue && id > 0)
            {
                query = query.Where(p => p.Id == id);
            }
            else
            {
                query = null;
            }
            return query;
        }

        public void UpdateItem()
        {
            PedidoActions actPedido = new PedidoActions();
            string Id = actPedido.GetIdPedido();
            ItemPedido item = new ItemPedido();
            
            item = CriaPedidoTemporario(Id);
            TryUpdateModel(item);

            if (item.Qtdd < 1)
            {
                item.Qtdd = 1;
            }
            
            if (ModelState.IsValid)
            {
                using (actPedido)
                {
                    actPedido.AdicionaProduto(IdProduto, item.Qtdd, item.Observacao);
                }
                Response.Redirect("./ListaItensPedido.aspx");
            }
        }

        // This is the Select method to selects a single Produto item with the id
        // USAGE: <asp:FormView SelectMethod="GetItem">
        public ItemPedido GetItem()
        {
            PedidoActions actPedido = new PedidoActions();
            string Id = actPedido.GetIdPedido();

            return CriaPedidoTemporario(Id);   
        }

        protected ItemPedido CriaPedidoTemporario(string Id)
        {
            KakarotoEntities _db = new KakarotoEntities();
            return new ItemPedido
            {
                Id = Guid.NewGuid().ToString(),
                Id_Ped = Id,
                Id_Prod = IdProduto,
                Produto = _db.Produto.SingleOrDefault(
                    p => p.Id == IdProduto),
                Preco = _db.Produto.SingleOrDefault(p => p.Id == IdProduto).Preco,
                Qtdd = 1,
                Hora = DateTime.Now
            };
        }

        protected void ItemCommand(object sender, FormViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Cancel", StringComparison.OrdinalIgnoreCase))
            {
                Response.Redirect(prevPage);
            }
        }
    }
}